{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Summarization with Claude\n",
    "\n",
    "## Introduction\n",
    "\n",
    "Summarization is a crucial task in natural language processing that involves condensing large amounts of text into shorter, more digestible formats while retaining key information. In today's information-rich world, the ability to quickly extract and synthesize essential points from lengthy documents is invaluable across various industries and applications.\n",
    "\n",
    "This guide focuses on leveraging Claude's capabilities for summarization, with a particular emphasis on legal documents. Legal documents can often be long and tedious to read – particularly where there is a lot of fine print and legal terminology. We'll explore techniques for effective summarization of such documents, methods for evaluating summary quality, and strategies for systematically improving summarization performance.\n",
    "\n",
    "Key aspects we'll cover include:\n",
    "- Crafting effective prompts for summarization\n",
    "- Extracting specific metadata from documents\n",
    "- Handling longer documents beyond typical token limits\n",
    "- Evaluating summary quality using automated methods (e.g., ROUGE scores and [Promptfoo](https://www.promptfoo.dev/) custom methods)\n",
    "- Iteratively improving summarization performance\n",
    "- General conclusive tips on how to optimize your summarization workflows\n",
    "\n",
    "By the end of this guide, you'll have a solid understanding of how to implement and refine summarization tasks using Claude, along with a framework for applying these techniques to your own specific use cases.\n",
    "\n",
    "Before we get going, it's worth talking about evaluations in this guide. Evaluating the quality of summarization is a notoriously challenging task. Unlike many other natural language processing tasks, summarization evaluation often lacks clear-cut, objective metrics. The process can be highly subjective, with different readers valuing different aspects of a summary. Traditional empirical methods like ROUGE scores, while useful, have limitations in capturing nuanced aspects such as coherence, factual accuracy, and relevance. Moreover, the \"best\" summary can vary depending on the specific use case, target audience, and desired level of detail. Despite these challenges, we explore several different approaches in this guide that can be leveraged, combining automated metrics, regular expressions, and task-specific criteria. In this guide we recognize that the most effective approach often involves a tailored combination of techniques suited to the particular summarization task at hand.\n",
    "\n",
    "## Table of Contents\n",
    "\n",
    "1. [Setup](#setup)\n",
    "2. [Data Preparation](#data-preparation)\n",
    "3. [Basic Summarization](#basic-summarization)\n",
    "4. [Multi-Shot Basic Summarization](#multi-shot-basic-summarization)\n",
    "5. [Advanced Techniques](#advanced-techniques)\n",
    "    - [Guided Summarization](#guided-summarization)\n",
    "    - [Domain-Specific Guided Summarization](#domain-specific-guided-summarization)\n",
    "    - [Meta-Summarization](#including-the-context-of-the-entire-document-meta-summarization)\n",
    "6. [Summary Indexed Documents: An Advanced RAG Approach](#summary-indexed-documents-an-advanced-rag-approach)\n",
    "    - [Best Practices for Summarization Rag](#best-practices-for-summarization-rag)\n",
    "7. [Evaluations](#evaluations)\n",
    "8. [Iterative Improvement](#iterative-improvement)\n",
    "9. [Conclusion and Best Practices](#conclusion-and-best-practices)\n",
    "\n",
    "## Setup\n",
    "\n",
    "To complete this guide, you'll need to install the following packages:\n",
    "- anthropic \n",
    "- pypdf\n",
    "- pandas\n",
    "- matplotlib\n",
    "- sklearn\n",
    "- numpy\n",
    "- rouge-score\n",
    "- nltk\n",
    "- seaborn\n",
    "- [promptfoo](https://www.promptfoo.dev/) (for evaluation)\n",
    "\n",
    "You'll also need an Claude API key.\n",
    "\n",
    "Let's start by installing the required packages and setting up our environment:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# install packages\n",
    "!pip install anthropic pypdf pandas matplotlib numpy rouge-score nltk seaborn --quiet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Setup complete!\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "import anthropic\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "# Set up Anthropic client\n",
    "# You can set up a .env file with your API key to keep it private, and import it like so:\n",
    "# from dotenv import load_dotenv\n",
    "# load_dotenv()\n",
    "\n",
    "# or add your key directly\n",
    "api_key = \"ANTHROPIC_API_KEY\"  # Replace ANTHROPIC_API_KEY with your actual API key\n",
    "client = anthropic.Anthropic(api_key=api_key)\n",
    "\n",
    "print(\"Setup complete!\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Preparation\n",
    "Before we can begin summarizing documents, we need to prepare our data. This involves extracting text from PDFs, cleaning the text, and ensuring it's ready for input into our language model. For the purposes of this demo, we have sourced a [publicly available Sublease Agreement from the sec.gov website](https://www.sec.gov/Archives/edgar/data/1045425/000119312507044370/dex1032.htm). \n",
    "\n",
    "If you have any PDF you want to test this on, feel free to import it into this directory, and then change the file path below. **If you want to just use a text blob via copy and paste, skip this step and define `text = <text blob>`**.\n",
    "\n",
    "Here's a set of functions to handle this process:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EX-10.32 7 dex1032.htm SUBLEASE AGREEMENT Exhibit 10.32 SUBLEASE AGREEMENT THIS SUBLEASE AGREEMENT (“Sublease ”), is dated as of April 1, 2006, by and between COHEN BROTHERS, LLC d/b/a COHEN & COMP ANY (“Sublessor ”) and TABERNA CAPIT AL MANAGEMENT , LLC (“Sublessee ”), collectively , the “ Parties ” and each a “ Party ”. WHEREAS, Sublessor is the lessee under a written lease agreement dated June 22, 2005 wherein Brandywine Cira, L.P ., a Delaware limited partnership (“ Lessor ”), leased Suite N\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "import pypdf\n",
    "\n",
    "pdf_path = \"data/Sample Sublease Agreement.pdf\"\n",
    "\n",
    "\n",
    "def extract_text_from_pdf(pdf_path):\n",
    "    with open(pdf_path, \"rb\") as file:\n",
    "        reader = pypdf.PdfReader(file)\n",
    "        text = \"\"\n",
    "        for page in reader.pages:\n",
    "            text += page.extract_text() + \"\\n\"\n",
    "    return text\n",
    "\n",
    "\n",
    "def clean_text(text):\n",
    "    # Remove extra whitespace\n",
    "    text = re.sub(r\"\\s+\", \" \", text)\n",
    "    # Remove page numbers\n",
    "    text = re.sub(r\"\\n\\s*\\d+\\s*\\n\", \"\\n\", text)\n",
    "    return text.strip()\n",
    "\n",
    "\n",
    "def prepare_for_llm(text, max_tokens=180000):\n",
    "    # Truncate text to fit within token limit (approximate)\n",
    "    return text[: max_tokens * 4]  # Assuming average of 4 characters per token\n",
    "\n",
    "\n",
    "def get_llm_text(path):\n",
    "    extracted_text = extract_text_from_pdf(path)\n",
    "    cleaned_text = clean_text(extracted_text)\n",
    "    llm_ready_text = prepare_for_llm(cleaned_text)\n",
    "    return llm_ready_text\n",
    "\n",
    "\n",
    "# You can now use get_llm_text in your LLM prompt\n",
    "text = get_llm_text(pdf_path)\n",
    "print(text[:500])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This setup allows us to easily process PDF documents and prepare them for summarization. In the next section, we'll start with a basic summarization approach and then build upon it with more advanced techniques."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Basic Summarization\n",
    "\n",
    "Let's start with a simple summarization function using Claude. This is a simple attempt at using Claude to summarize the text from the document above. As we progress through this guide, we will improve on this method.\n",
    "\n",
    "One thing to note is while this might seem basic, we are actually using some important functionality of Claude already. One piece worth noting is the use of the assistant role and stop sequences. The assistant preamble tees Claude up to include the summary directly after the final phrase `<summary>`. The stop sequence `</summary>` then tells Claude to stop generating. This is a pattern we will continue to use throughout this guide."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def basic_summarize(text, max_tokens=1000):\n",
    "    # Prompt the model to summarize the text\n",
    "    prompt = f\"\"\"Summarize the following text in bullet points. Focus on the main ideas and key details:\n",
    "    {text}\n",
    "    \"\"\"\n",
    "\n",
    "    response = client.messages.create(\n",
    "        model=\"claude-sonnet-4-5\",\n",
    "        max_tokens=max_tokens,\n",
    "        system=\"You are a legal analyst known for highly accurate and detailed summaries of legal documents.\",\n",
    "        messages=[\n",
    "            {\"role\": \"user\", \"content\": prompt},\n",
    "            {\n",
    "                \"role\": \"assistant\",\n",
    "                \"content\": \"Here is the summary of the legal document: <summary>\",\n",
    "            },\n",
    "        ],\n",
    "        stop_sequences=[\"</summary>\"],\n",
    "    )\n",
    "\n",
    "    return response.content[0].text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "Key Points:\n",
      "•Between parties: COHEN BROTHERS, LLC d/b/a COHEN & COMPANY (Sublessor) and TABERNA CAPITAL MANAGEMENT, LLC (Sublessee).\n",
      "•Signed on April 1, 2006.\n",
      "•Premises: 2,000 square feet of office space in Suite 1703 in the Cira Center at 2929 Arch Street, Philadelphia.\n",
      "\n",
      "Major Terms:\n",
      "•Term: 5 years starting April 1, 2006\n",
      "•Payment: Fixed rent increases annually from $34.50/sf to $37.34/sf over the term.\n",
      "•Utilities: Tenant pays for electricity and pro rata share of building expenses.\n",
      "•Use: General office use only.\n",
      "•Assignment/Subletting: Requires prior written consent of landlord.\n",
      "\n",
      "Key Obligations:\n",
      "•Tenant must maintain insurance including liability and property insurance.  \n",
      "•Tenant responsible for interior maintenance/condition of the premises.\n",
      "•Tenant must comply with all building rules and regulations.\n",
      "•Tenant must maintain premises in good order and repair.\n",
      "\n",
      "Notable Provisions:\n",
      "•Sublessor can recapture premises if tenant tries to assign/sublet without proper consent.\n",
      "•Default provisions give sublessor multiple remedies including termination and accelerated rent.  \n",
      "•Tenant must indemnify landlord for claims related to tenant's use or actions.\n",
      "•Tenant responsible for maintaining and repairing interior of premises.\n",
      "\n",
      "This appears to be a fairly standard commercial office sublease with typical provisions regarding tenant obligations, insurance requirements, default remedies, etc. The sublessor retains significant control and remedies while the sublessee has standard obligations for an office tenant.\n"
     ]
    }
   ],
   "source": [
    "basic_response = basic_summarize(text, max_tokens=1000)\n",
    "\n",
    "print(basic_response)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This basic approach provides a simple summary, but it may not capture all the nuances we need for legal or financial documents. As you'll notice too, when you rerun the cell above, there is no standard, formalized output. Instead, we retrieve a basic summarization of the document, without much structured output to parse through. This makes it harder to read, more difficult to trust (how do we know it didn't miss something?) and thus trickier to use in any real world context.\n",
    "\n",
    "Let's see if we can tweak our prompt to get a more structure version of our summary."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Multi-Shot Basic Summarization\n",
    "\n",
    "It's pretty cool that we can summarize massive documents so fast, but we can do even better. Let's try adding a few examples to our prompt to see if we can improve the output and create a bit of structure in our output before we move on to even more advanced techniques. \n",
    "\n",
    "Note, here we haven't really change the actual format of the request, although we have appended 2 additional pieces: \n",
    "\n",
    "1. We've told the model \"do not preamble\". This can often be a good idea when it comes to constraining the model output to just the answer we want, without that initial form conversational angle you might be familiar with if you've used Claude before. It's particularly important when we aren't using other \"instructions\" within the prompt (as we might do later in this guide).\n",
    "2. We append 3 examples of summarized documents. This is called few-shot or multi-shot learning, and it can help the model understand what we're looking for.\n",
    "\n",
    "Let's see how the output changes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We import from our data directory to save space in our notebook\n",
    "from data.multiple_subleases import document1, document2, document3, sample1, sample2, sample3\n",
    "\n",
    "\n",
    "def basic_summarize_multishot(text, max_tokens=1000):\n",
    "    # Prompt the model to summarize the text\n",
    "    prompt = f\"\"\"Summarize the following text in bullet points. Focus on the main ideas and key details:\n",
    "        {text}\n",
    "\n",
    "    Do not preamble.\n",
    "\n",
    "    Use these examples for guidance in summarizing:\n",
    "\n",
    "    <example1>\n",
    "        <original1>\n",
    "            {document1}\n",
    "        </original1>\n",
    "\n",
    "        <summary1>\n",
    "            {sample1}\n",
    "        </summary1>\n",
    "    </example1>\n",
    "\n",
    "    <example2>\n",
    "        <original2>\n",
    "            {document2}\n",
    "        </original2>\n",
    "\n",
    "        <summary2>\n",
    "            {sample2}\n",
    "        </summary2>\n",
    "    </example2>\n",
    "\n",
    "    <example3>\n",
    "        <original3>\n",
    "            {document3}\n",
    "        </original3>\n",
    "\n",
    "        <summary3>\n",
    "            {sample3}\n",
    "        </summary3>\n",
    "    </example3>\n",
    "    \"\"\"\n",
    "\n",
    "    response = client.messages.create(\n",
    "        model=\"claude-sonnet-4-5\",\n",
    "        max_tokens=max_tokens,\n",
    "        system=\"You are a legal analyst known for highly accurate and detailed summaries of legal documents.\",\n",
    "        messages=[\n",
    "            {\"role\": \"user\", \"content\": prompt},\n",
    "            {\n",
    "                \"role\": \"assistant\",\n",
    "                \"content\": \"Here is the summary of the legal document: <summary>\",\n",
    "            },\n",
    "        ],\n",
    "        stop_sequences=[\"</summary>\"],\n",
    "    )\n",
    "\n",
    "    return response.content[0].text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "Description: This is a sublease agreement between Cohen Brothers, LLC (Sublessor) and Taberna Capital Management, LLC (Sublessee) for office space in Philadelphia.\n",
      "\n",
      "<parties involved>\n",
      "Sublessor: Cohen Brothers, LLC d/b/a Cohen & Company\n",
      "Sublessee: Taberna Capital Management, LLC\n",
      "Original lessor: Brandywine Cira, L.P.\n",
      "</parties involved>\n",
      "\n",
      "<property details> \n",
      "Address: 2929 Arch Street, Suite 1703, Philadelphia, PA\n",
      "Description: 2,000 square feet of office space with access to file space, printers, copiers, kitchen, conference rooms\n",
      "Permitted use: General office use\n",
      "</property details>\n",
      "\n",
      "<term and rent>\n",
      "Start date: April 1, 2006\n",
      "End date: 5 years from start date\n",
      "Monthly rent:\n",
      "• Months 1-12: $5,750\n",
      "• Months 13-24: $5,865\n",
      "• Months 25-36: $5,981.67\n",
      "• Months 37-48: $6,101.67\n",
      "• Months 49-60: $6,223.33\n",
      "</term and rent>\n",
      "\n",
      "<responsibilities>\n",
      "Utilities: Not explicitly specified\n",
      "Maintenance: Not explicitly specified\n",
      "Repairs: Tenant responsible for damage repairs\n",
      "Insurance: Tenant required to maintain liability insurance with $3M limit and workers compensation insurance\n",
      "</responsibilities>\n",
      "\n",
      "<special provisions>\n",
      "Default: Detailed events of default and remedies specified\n",
      "Holdover: Double rent for unauthorized holdover period\n",
      "Assignment/Subletting: Not permitted without landlord consent\n",
      "Alterations: Require landlord consent\n",
      "Access to services: Includes file space, copiers, conference rooms, receptionist services\n",
      "</special provisions>\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "basic_multishot_response = basic_summarize_multishot(text, max_tokens=1000)\n",
    "\n",
    "print(basic_multishot_response)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you look at the examples we provided, you see see that the format of the output above is the same *(go to data/<any of the .txt files> to see)*. This is interesting – we didn't explicitly tell Claude to follow the format of the examples, but it seems to have picked up on it anyway. This illustrates the power of few-shot learning, and how Claude can generalize from a few examples to new inputs."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Advanced Summarization Techniques\n",
    "\n",
    "### Guided Summarization\n",
    "\n",
    "Guided summarization is where we explicitly define a framework for the model to abide by in it's summarization task. We can do this all via prompting, changing the details of the prompt to guide Claude to be more or less verbose, include more or less technical terminology, or provide a higher or lower level summary of the context at hand. For legal documents, we can guide the summarization to focus on specific aspects.\n",
    "\n",
    "Note, we could likely accomplish the same formatted output we reveal below via examples (which we explored above)!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def guided_legal_summary(text, max_tokens=1000):\n",
    "    # Prompt the model to summarize the text\n",
    "    prompt = f\"\"\"Summarize the following legal document. Focus on these key aspects:\n",
    "\n",
    "    1. Parties involved\n",
    "    2. Main subject matter\n",
    "    3. Key terms and conditions\n",
    "    4. Important dates or deadlines\n",
    "    5. Any unusual or notable clauses\n",
    "\n",
    "    Provide the summary in bullet points under each category.\n",
    "\n",
    "    Document text:\n",
    "    {text}\n",
    "\n",
    "    \"\"\"\n",
    "\n",
    "    response = client.messages.create(\n",
    "        model=\"claude-sonnet-4-5\",\n",
    "        max_tokens=max_tokens,\n",
    "        system=\"You are a legal analyst known for highly accurate and detailed summaries of legal documents.\",\n",
    "        messages=[\n",
    "            {\"role\": \"user\", \"content\": prompt},\n",
    "            {\n",
    "                \"role\": \"assistant\",\n",
    "                \"content\": \"Here is the summary of the legal document: <summary>\",\n",
    "            },\n",
    "        ],\n",
    "        stop_sequences=[\"</summary>\"],\n",
    "    )\n",
    "\n",
    "    return response.content[0].text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "1. Parties Involved\n",
      "- Sublessor: Cohen Brothers, LLC d/b/a Cohen & Company\n",
      "- Sublessee: Taberna Capital Management, LLC\n",
      "- Original Landlord: Brandywine Cira, L.P. (Master Lease landlord)\n",
      "\n",
      "2. Main Subject Matter\n",
      "- Sublease agreement for Suite 1703 at Cira Centre, 2929 Arch Street, Philadelphia, PA\n",
      "- 2,000 square feet of office space within the Master Premises of 13,777 rentable square feet\n",
      "- Includes furniture, file space, printers, copiers, kitchen, conference room facilities and receptionist/secretarial services\n",
      "\n",
      "3. Key Terms and Conditions\n",
      "- Initial Term: 5 years from April 1, 2006 \n",
      "- Fixed Rent: Escalating annual rent schedule starting at $34.50/sq ft in Year 1 ($69,000 annually) up to $37.34/sq ft in Year 5 ($74,680 annually)\n",
      "- Pro rata share of operating expenses and utilities\n",
      "- No assignment or subletting without Sublessor's prior written consent\n",
      "- Sublessee takes premises \"AS IS\"\n",
      "- Sublessee must maintain required insurance coverage\n",
      "- Default provisions for non-payment, breach of lease terms, bankruptcy, etc.\n",
      "\n",
      "4. Important Dates/Deadlines  \n",
      "- Commencement Date: April 1, 2006\n",
      "- Expiration Date: 5 years from Commencement Date\n",
      "- Fixed Rent payable monthly in advance on 1st of each month\n",
      "- 5-day grace period for late payments before default\n",
      "\n",
      "5. Notable Clauses\n",
      "- Indemnification requirements for both parties\n",
      "- Holdover rent at 2x monthly rate if Sublessee remains after term ends\n",
      "- Sublessor not liable for utilities/services interruption\n",
      "- Sublessee responsible for any construction liens\n",
      "- Confession of judgment provision\n",
      "- Waiver of jury trial provision\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Example usage\n",
    "legal_summary = guided_legal_summary(text)\n",
    "print(legal_summary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This certainly makes it easier to parse out the most relevant sections of the document and understand the implications of specific line items and important clauses."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Domain-Specific Guided Summarization\n",
    "\n",
    "You could give the above guided summarization prompt to any type of document, but we can make it even more powerful by tailoring it to specific document types. For example, if we know we're dealing with a sublease agreement, we can guide the model to focus on the most relevant legal terms and concepts for that particular type of document. This would be most relevant when we are working on a specific use case using Claude and explicitly know the most relevant values we want to extract.\n",
    "\n",
    "Here's an example of how we might modify our guided summarization function for sublease agreements. Note that we'll also add the 'model' as an additional parameter to our function so that we can more easily choose different models for summarization based upon the task:\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def guided_sublease_summary(text, model=\"claude-sonnet-4-5\", max_tokens=1000):\n",
    "    # Prompt the model to summarize the sublease agreement\n",
    "    prompt = f\"\"\"Summarize the following sublease agreement. Focus on these key aspects:\n",
    "\n",
    "    1. Parties involved (sublessor, sublessee, original lessor)\n",
    "    2. Property details (address, description, permitted use)\n",
    "    3. Term and rent (start date, end date, monthly rent, security deposit)\n",
    "    4. Responsibilities (utilities, maintenance, repairs)\n",
    "    5. Consent and notices (landlord's consent, notice requirements)\n",
    "    6. Special provisions (furniture, parking, subletting restrictions)\n",
    "\n",
    "    Provide the summary in bullet points nested within the XML header for each section. For example:\n",
    "\n",
    "    <parties involved>\n",
    "    - Sublessor: [Name]\n",
    "    // Add more details as needed\n",
    "    </parties involved>\n",
    "\n",
    "    If any information is not explicitly stated in the document, note it as \"Not specified\". Do not preamble.\n",
    "\n",
    "    Sublease agreement text:\n",
    "    {text}\n",
    "\n",
    "    \"\"\"\n",
    "\n",
    "    response = client.messages.create(\n",
    "        model=model,\n",
    "        max_tokens=max_tokens,\n",
    "        system=\"You are a legal analyst specializing in real estate law, known for highly accurate and detailed summaries of sublease agreements.\",\n",
    "        messages=[\n",
    "            {\"role\": \"user\", \"content\": prompt},\n",
    "            {\n",
    "                \"role\": \"assistant\",\n",
    "                \"content\": \"Here is the summary of the sublease agreement: <summary>\",\n",
    "            },\n",
    "        ],\n",
    "        stop_sequences=[\"</summary>\"],\n",
    "    )\n",
    "\n",
    "    return response.content[0].text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "<parties involved>\n",
      "- Sublessor: Cohen Brothers, LLC (d/b/a Cohen & Company) \n",
      "- Sublessee: Taberna Capital Management, LLC\n",
      "- Original Lessor: Brandywine Cira, L.P. (Master Lease holder)\n",
      "</parties involved>\n",
      "\n",
      "<property details>\n",
      "- Address: 2929 Arch Street, Suite 1703, Philadelphia, PA\n",
      "- Description: 2,000 square feet of office space in Suite 1703 \n",
      "- Permitted Use: General office use\n",
      "- Includes: Access to file space, printers, copiers, kitchen, conference rooms, receptionist/secretarial services\n",
      "</property details>\n",
      "\n",
      "<term and rent>\n",
      "- Start Date: April 1, 2006\n",
      "- End Date: 5 years from commencement\n",
      "- Monthly Rent: Escalating schedule starting at $5,750 in year 1 up to $6,223.33 in year 5\n",
      "- Security Deposit: Not specified\n",
      "</term and rent>\n",
      "\n",
      "<responsibilities>\n",
      "- Utilities: Sublessee pays proportional share of utilities and operating expenses\n",
      "- Maintenance: Sublessor responsible for base building maintenance\n",
      "- Repairs: Sublessee responsible for repairs due to its use\n",
      "- Insurance: Sublessee must maintain general liability and property insurance\n",
      "</responsibilities>\n",
      "\n",
      "<consent and notices>\n",
      "- Landlord's Consent: Required for assignment/subletting\n",
      "- Notice Requirements: All notices must be in writing and delivered to specified addresses\n",
      "- Sublessor's Consent: Required for alterations, improvements, signage\n",
      "</consent and notices>\n",
      "\n",
      "<special provisions>\n",
      "- Furniture: Included in lease\n",
      "- Parking: Not included\n",
      "- Assignment: No assignment/subletting without Sublessor's consent\n",
      "- Default Remedies: Specified remedies including termination and accelerated rent\n",
      "</special provisions>\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Example usage\n",
    "sublease_summary = guided_sublease_summary(text)\n",
    "print(sublease_summary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Because we decided to output each section of the summary in XML tags, we can now parse them individually out like so (this could also be done via JSON or any other format):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parties involved:\n",
      "- Sublessor: Cohen Brothers, LLC (d/b/a Cohen & Company)\n",
      "- Sublessee: Taberna Capital Management, LLC\n",
      "- Original Lessor: Brandywine Cira, L.P. (Master Lease holder)\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "\n",
    "def parse_sections_regex(text):\n",
    "    pattern = r\"<(.*?)>(.*?)</\\1>\"\n",
    "    matches = re.findall(pattern, text, re.DOTALL)\n",
    "\n",
    "    parsed_sections = {}\n",
    "    for tag, content in matches:\n",
    "        items = [item.strip(\"- \").strip() for item in content.strip().split(\"\\n\") if item.strip()]\n",
    "        parsed_sections[tag] = items\n",
    "\n",
    "    return parsed_sections\n",
    "\n",
    "\n",
    "# Parse the sections\n",
    "parsed_sections = parse_sections_regex(sublease_summary)\n",
    "\n",
    "# Check if parsing was successful\n",
    "if isinstance(parsed_sections, dict) and \"parties involved\" in parsed_sections:\n",
    "    print(\"Parties involved:\")\n",
    "    for item in parsed_sections[\"parties involved\"]:\n",
    "        print(f\"- {item}\")\n",
    "else:\n",
    "    print(\"Error: Parsing failed or 'parties involved' section not found.\")\n",
    "    print(\"Parsed result:\", parsed_sections)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Including the Context of Multiple Documents (Meta-Summarization)\n",
    "\n",
    "What if we have a lot of documents related to the same client? We can use a chunking method in order to handle this. This is a technique that involves breaking down documents into smaller, manageable chunks and then processing each chunk separately. We can then combine the summaries of each chunk to create a meta-summary of the entire document. This can be particularly helpful when we want to summarize a large number of documents or when we want to summarize a single document that is very long.\n",
    "\n",
    "Here's an example of how we might do this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "<parties involved>\n",
      "- Sublessor: Apex Innovations, Inc. (Delaware corporation) later identified as TechHub Enterprises, LLC\n",
      "- Sublessee: NanoSphere Solutions, Inc. and Quantum Dynamics, LLC (California LLC)\n",
      "- Original Lessor: Innovate Properties, LLP\n",
      "</parties involved>\n",
      "\n",
      "<property details>\n",
      "- Address: 9876 Innovation Park, Building C, San Francisco, CA 94107\n",
      "- Description: Approximately 15,000-25,000 square feet of office and laboratory space\n",
      "- Permitted Use: General office purposes, research and development, and laboratory uses consistent with BSL-2 facility requirements\n",
      "</property details>\n",
      "\n",
      "<term and rent>\n",
      "- Start Date: September 1, 2023\n",
      "- End Date: August 31, 2026 (with option to extend for 3-5 additional years)\n",
      "- Monthly Rent: Starting at $75,000/month with annual 3% increases\n",
      "- Security Deposit: $450,000-$787,500\n",
      "</term and rent>\n",
      "\n",
      "<responsibilities>\n",
      "- Utilities: Sublessee responsible for all utilities and services, including electricity, gas, water, sewer, telephone, internet, and janitorial\n",
      "- Maintenance: Sublessee responsible for interior maintenance, repairs and replacements, including walls, floors, ceilings, doors, windows, fixtures\n",
      "- Repairs: Sublessee responsible for repairs except building structure, exterior walls, roof which are Sublessor's responsibility\n",
      "</responsibilities>\n",
      "\n",
      "<consent and notices>\n",
      "- Landlord's Consent: Required for assignments, subletting, alterations\n",
      "- Notice Requirements: 30 days written notice for defaults, insurance changes; 9-12 months notice for term extensions\n",
      "</consent and notices>\n",
      "\n",
      "<special provisions>\n",
      "- Furniture: Right to install furniture/equipment 15-30 days before commencement\n",
      "- Parking: Non-exclusive right to use common parking facilities\n",
      "- Subletting Restrictions: No assignment/subletting without prior written consent, except to affiliated entities\n",
      "- Additional: Hazardous materials restrictions, OFAC compliance requirements, jury trial waiver\n",
      "</special provisions>\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from data.multiple_subleases import document1, document2, document3\n",
    "\n",
    "\n",
    "def chunk_text(text, chunk_size=2000):\n",
    "    return [text[i : i + chunk_size] for i in range(0, len(text), chunk_size)]\n",
    "\n",
    "\n",
    "def summarize_long_document(text, max_tokens=2000):\n",
    "    chunks = chunk_text(text)\n",
    "\n",
    "    # Iterate over chunks and summarize each one\n",
    "    # We use guided_legal_summary here, but you can use basic_summarize or any other summarization function\n",
    "    # Note that we'll also use haiku for the interim summaries, and the 3.5 sonnet for the final summary\n",
    "    chunk_summaries = [\n",
    "        guided_sublease_summary(chunk, model=\"claude-haiku-4-5\", max_tokens=max_tokens)\n",
    "        for chunk in chunks\n",
    "    ]\n",
    "\n",
    "    final_summary_prompt = f\"\"\"\n",
    "\n",
    "    You are looking at the chunked summaries of multiple documents that are all related. Combine the following summaries of the document from different truthful sources into a coherent overall summary:\n",
    "\n",
    "    {\"\".join(chunk_summaries)}\n",
    "\n",
    "    1. Parties involved (sublessor, sublessee, original lessor)\n",
    "    2. Property details (address, description, permitted use)\n",
    "    3. Term and rent (start date, end date, monthly rent, security deposit)\n",
    "    4. Responsibilities (utilities, maintenance, repairs)\n",
    "    5. Consent and notices (landlord's consent, notice requirements)\n",
    "    6. Special provisions (furniture, parking, subletting restrictions)\n",
    "\n",
    "    Provide the summary in bullet points nested within the XML header for each section. For example:\n",
    "\n",
    "    <parties involved>\n",
    "    - Sublessor: [Name]\n",
    "    // Add more details as needed\n",
    "    </parties involved>\n",
    "\n",
    "    If any information is not explicitly stated in the document, note it as \"Not specified\".\n",
    "\n",
    "    Summary:\n",
    "    \"\"\"\n",
    "\n",
    "    response = client.messages.create(\n",
    "        model=\"claude-sonnet-4-5\",\n",
    "        max_tokens=max_tokens,\n",
    "        system=\"You are a legal expert that summarizes notes on one document.\",\n",
    "        messages=[\n",
    "            {\"role\": \"user\", \"content\": final_summary_prompt},\n",
    "            {\n",
    "                \"role\": \"assistant\",\n",
    "                \"content\": \"Here is the summary of the legal document: <summary>\",\n",
    "            },\n",
    "        ],\n",
    "        stop_sequences=[\"</summary>\"],\n",
    "    )\n",
    "\n",
    "    return response.content[0].text\n",
    "\n",
    "\n",
    "# Example usage\n",
    "# combine 3 documents (all related) together\n",
    "text = document1 + document2 + document3\n",
    "long_summary = summarize_long_document(text)\n",
    "print(long_summary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summary Indexed Documents: An Advanced RAG Approach\n",
    "\n",
    "Summary Indexed Documents is an advanced approach to Retrieval-Augmented Generation (RAG) that operates at the document level. \n",
    "\n",
    "This method offers several advantages over traditional RAG techniques, particularly in scenarios involving large documents or when precise information retrieval is crucial.\n",
    "\n",
    "#### How It Works\n",
    "\n",
    "1. Document Summarization: Generate concise summaries for each document in your corpus (subset of text is queried and quickly summarized).\n",
    "2. Context Window Optimization: Ensure all summaries fit within the context window of your language model.\n",
    "3. Relevancy Scoring: Ask a model to rank the relevance of each summary to the query being asked.\n",
    "4. Reranking (Optional): Apply reranking techniques to further refine and compress the top-K results.\n",
    "5. Answer the query at-hand.\n",
    "\n",
    "There are some distinct advantages to this approach: \n",
    "- More efficient way of ranking documents for retrieval, using less context than traditional RAG methods.\n",
    "- Superior Performance on Specific Tasks: Outperforms other RAG methods, consistently ranking the correct document first.\n",
    "- Optimized Information Retrieval: Reranking helps compress results, ensuring the most concise and relevant information is presented to the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "class LegalSummaryIndexedDocuments:\n",
    "    def __init__(self, client):\n",
    "        self.client = client  # Claude client\n",
    "        self.documents: list[dict[str, str]] = []  # List of docs to store\n",
    "        self.summaries: list[str] = []\n",
    "\n",
    "    def add_document(self, doc_id: str, content: str):\n",
    "        # Adds a document to the index\n",
    "        self.documents.append({\"id\": doc_id, \"content\": content})\n",
    "\n",
    "    def generate_summaries(self):\n",
    "        # Generates summaries for all documents in the index\n",
    "        for doc in self.documents:\n",
    "            summary = self._generate_legal_summary(doc[\"content\"])\n",
    "            self.summaries.append(summary)\n",
    "\n",
    "    def _generate_legal_summary(self, content: str) -> str:\n",
    "        # Note how we constrain the content to a maximum of 2000 words. We do this because we don't need that much information for the intial ranking.\n",
    "        prompt = f\"\"\"\n",
    "        Summarize the following sublease agreement. Focus on these key aspects:\n",
    "\n",
    "        1. Parties involved (sublessor, sublessee, original lessor)\n",
    "        2. Property details (address, description, permitted use)\n",
    "        3. Term and rent (start date, end date, monthly rent, security deposit)\n",
    "        4. Responsibilities (utilities, maintenance, repairs)\n",
    "        5. Consent and notices (landlord's consent, notice requirements)\n",
    "        6. Special provisions (furniture, parking, subletting restrictions)\n",
    "\n",
    "        Provide the summary in bullet points nested within the XML header for each section. For example:\n",
    "\n",
    "        <parties involved>\n",
    "        - Sublessor: [Name]\n",
    "        // Add more details as needed\n",
    "        </parties involved>\n",
    "\n",
    "        If any information is not explicitly stated in the document, note it as \"Not specified\".\n",
    "\n",
    "        Sublease agreement text:\n",
    "        {content[:2000]}...\n",
    "\n",
    "        Summary:\n",
    "        \"\"\"\n",
    "\n",
    "        response = client.messages.create(\n",
    "            model=\"claude-sonnet-4-5\",\n",
    "            max_tokens=500,\n",
    "            temperature=0.2,\n",
    "            messages=[\n",
    "                {\"role\": \"user\", \"content\": prompt},\n",
    "                {\n",
    "                    \"role\": \"assistant\",\n",
    "                    \"content\": \"Here is the summary of the legal document: <summary>\",\n",
    "                },\n",
    "            ],\n",
    "            stop_sequences=[\"</summary>\"],\n",
    "        )\n",
    "        return response.content[0].text\n",
    "\n",
    "    def rank_documents(self, query: str, top_k: int = 3) -> list[tuple[str, float]]:\n",
    "        \"\"\"\n",
    "        Rank documents based on their relevance to the given query.\n",
    "        We use Haiku here as a cheaper, faster model for ranking.\n",
    "        \"\"\"\n",
    "        ranked_scores = []\n",
    "        for summary in self.summaries:\n",
    "            prompt = f\"Legal document summary: {summary}\\n\\nLegal query: {query}\\n\\nRate the relevance of this legal document to the query on a scale of 0 to 10. Only output the numeric value:\"\n",
    "\n",
    "            response = client.messages.create(\n",
    "                model=\"claude-haiku-4-5\",\n",
    "                max_tokens=2,\n",
    "                temperature=0,\n",
    "                messages=[{\"role\": \"user\", \"content\": prompt}],\n",
    "            )\n",
    "            ranked_score = float(response.content[0].text)\n",
    "            ranked_scores.append(ranked_score)\n",
    "\n",
    "        ranked_indices = np.argsort(ranked_scores)[::-1][:top_k]\n",
    "        return [(self.documents[i][\"id\"], ranked_scores[i]) for i in ranked_indices]\n",
    "\n",
    "    def extract_relevant_clauses(self, doc_id: str, query: str) -> list[str]:\n",
    "        \"\"\"\n",
    "        Extracts relevant clauses from a document based on a query.\n",
    "        \"\"\"\n",
    "        doc_content = next(doc[\"content\"] for doc in self.documents if doc[\"id\"] == doc_id)\n",
    "\n",
    "        prompt = f\"\"\"\n",
    "        Given the following legal query and document content, extract the most relevant clauses or sections and write the answer to the query.\n",
    "        Provide each relevant clause or section separately, preserving the original legal language:\n",
    "\n",
    "        Legal query: {query}\n",
    "\n",
    "        Document content: {doc_content}...\n",
    "\n",
    "        Relevant clauses or sections (separated by '---'):\"\"\"\n",
    "\n",
    "        response = client.messages.create(\n",
    "            model=\"claude-sonnet-4-5\",\n",
    "            max_tokens=1000,\n",
    "            temperature=0,\n",
    "            messages=[{\"role\": \"user\", \"content\": prompt}],\n",
    "        )\n",
    "\n",
    "        clauses = re.split(r\"\\n\\s*---\\s*\\n\", response.content[0].text.strip())\n",
    "        return [clause.strip() for clause in clauses if clause.strip()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial ranking: [('doc1', 8.0), ('doc3', 0.0), ('doc2', 0.0)]\n",
      "\n",
      "Relevant clauses from the top-ranked document:\n",
      "Clause 1: COMMERCIAL SUBLEASE AGREEMENT\n",
      "\n",
      "THIS COMMERCIAL SUBLEASE AGREEMENT (hereinafter referred to as the \"Sublease\") is made and entered into on this 15th day of August, 2023 (the \"Effective Date\"), by and between:\n",
      "\n",
      "SUBLESSOR: Apex Innovations, Inc., a Delaware corporation with its principal place of business at 1234 Tech Boulevard, Suite 5000, San Francisco, CA 94105 (hereinafter referred to as the \"Sublessor\")\n",
      "Clause 2: WHEREAS, Sublessor is the Tenant under that certain Master Lease Agreement dated January 1, 2020 (hereinafter referred to as the \"Master Lease\"), wherein Innovate Properties, LLP (hereinafter referred to as the \"Master Lessor\") leased to Sublessor those certain premises consisting of approximately 50,000 square feet of office space located at 9876 Innovation Park, Building C, Floors 10-12, San Francisco, CA 94107 (hereinafter referred to as the \"Master Premises\");\n",
      "Clause 3: Answer: There appears to be an error in the legal query. The query refers to \"Apex Innovations, LLC\" but the document shows that the sublessor is actually \"Apex Innovations, Inc.\", a Delaware corporation. The contract for Apex Innovations, Inc. is:\n",
      "\n",
      "1. A Commercial Sublease Agreement dated August 15, 2023, where they are the Sublessor\n",
      "2. A Master Lease Agreement dated January 1, 2020, where they are the Tenant under Innovate Properties, LLP\n"
     ]
    }
   ],
   "source": [
    "from data.multiple_subleases import document1, document2, document3\n",
    "\n",
    "lsid = LegalSummaryIndexedDocuments(client=client)\n",
    "\n",
    "# Add documents\n",
    "lsid.add_document(\"doc1\", document1)\n",
    "lsid.add_document(\"doc2\", document2)\n",
    "lsid.add_document(\"doc3\", document3)\n",
    "\n",
    "# Generate summaries - this would happen at ingestion\n",
    "lsid.generate_summaries()\n",
    "\n",
    "# Rank documents for a legal query\n",
    "legal_query = \"What contract is for the sublessor Apex Innovations, LLC?\"\n",
    "ranked_results = lsid.rank_documents(legal_query)\n",
    "\n",
    "print(\"Initial ranking:\", ranked_results)\n",
    "\n",
    "# Extract relevant clauses from the top-ranked document\n",
    "top_doc_id = ranked_results[0][0]\n",
    "relevant_clauses = lsid.extract_relevant_clauses(top_doc_id, legal_query)\n",
    "\n",
    "print(\"\\nRelevant clauses from the top-ranked document:\")\n",
    "for i, clause in enumerate(relevant_clauses[1:], 1):\n",
    "    print(f\"Clause {i}: {clause}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Best Practices for Summarization RAG\n",
    "\n",
    "- Optimal Summary Length: Experiment with different summary lengths to find the right balance between conciseness and informativeness.\n",
    "- Iterative Reranking: Consider multiple rounds of reranking for more precise results, especially with larger document sets.\n",
    "- Caching: Implement caching mechanisms for summaries and initial rankings to improve performance on repeated queries.\n",
    "\n",
    "Summary Indexed Documents offer a powerful approach to RAG, particularly excelling in scenarios involving large documents or when precise information retrieval is crucial. By leveraging document summarization, log probability scoring, and optional reranking, this method provides an efficient and effective way to retrieve and present relevant information to language models."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluations\n",
    "\n",
    "As mentioned in the introduction to this cookbook, evaluating the quality of a summary is hard work. This is because there are many ways to summarize a document, and different summaries may be equally valid. Depending on the use case, different aspects of a summary may be more or less important.\n",
    "\n",
    "You can read more about our empirical methodology to prompt engineering [here](https://docs.claude.com/en/docs/prompt-engineering). Using a Jupyter Notebook is a great way to start prompt engineering but as your datasets grow larger and your prompts more numerous it is important to leverage tooling that will scale with you. \n",
    "\n",
    "In this section of the guide we will explore using [Promptfoo](https://www.promptfoo.dev/) an open source LLM evaluation toolkit. To get started head over to the `./evaluation` directory and checkout the `./evaluation/README.md`.\n",
    "\n",
    "When you have successfully run an evaluation come back here to view the results. You can also view the results in a dynamic way using the command `npx promptfoo@latest view`, after creating some results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/var/folders/c8/rjj6d5_15tj4qh_zhlnz9xxr0000gp/T/ipykernel_58010/2701104606.py:7: MatplotlibDeprecationWarning: The seaborn styles shipped by Matplotlib are deprecated since 3.6, as they no longer correspond to the styles shipped by seaborn. However, they will remain available as 'seaborn-v0_8-<style>'. Alternatively, directly use the seaborn API instead.\n",
      "  plt.style.use('seaborn')\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x600 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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5StSrlwFvviiFYcPH4q3slRcFkssFkus7bHJFP9X7NlJ188GoKc/j42N5dNPm1OzZq14P0+RIsVzX1dEREREHEtDoZKpa9eu0b//l4SG3rJtO336FGnTeiYIFQDDhw9ixIjB8badOfM72bLlSNDWxcWFTZvW89NPP8bbbjAYcHf3IG3atHh4eODllY7ffvvV9nOz2czp0yFky5bdvjcHZMuWnevXr5I1q4/tv40bv7HVZDAY7H4NEREREfn3KFgkU/nzFyBv3vyMHDmE8+f/4MCBfUyfPplmzVrZ2ty+HUZ0dBQA/v7l+e67LWzZspkrVy6zYMEcgoOP0aBBowT79vT0om7d+owcOYT169dw9eoVTp8OYe7cmZw69Ru1atUFoFGjT5g3bxb79u3lwoXzjB49jJiYaCpXrm73+2vY8BN27PiOwMCVXL16hdWrl7Nq1XLb0ClXVzfCwsK4fv2a3a8lIiIiIvbTUKhkysnJiVGjxjF+fABffNESV1c3GjRoxEcfNba1qVu3Jv36DeS99+pQoUJlevTow6JF87l16wY5cuRi3LgpvPFG5ufuv3PnHmTKlJlvvglkypQJmEwmihQpxrRps8mUKRMAjRs34eHDhwQEDOfhwwcULFiEKVNm4enpaff7K1iwEF99NYT582czffoksmTJysCBw3nrrWIAVKhQiQ0b1tKkyUesWbOJ9Ok1iVtERETEkQzW1+hOY6Gh9x1dgrwiJpMRT093IiIeYjZbHF2OiLwEHb8iyZvJZOTz73o6uoxENa1ygKNLSFTp06d6oXYaCiUiIiIiInZTsBAREREREbspWIiIiIiIiN0ULERERERExG4KFiIiIiIiYjcFCxERERERsZuChYiIiIiI2E3BQkRERERE7KZgISIiIiIidlOwEBERERERuylYiIiIiIiI3RQsRERERETEbgoWIiIiIiJiNwULERERERGxm4KFiIiIiIjYTcFCRERERETspmAhIiIiIiJ2U7AQERERERG7KViIiIiIiIjdFCxERERERMRuChYiIiIiImI3BQsREREREbGbgoWIiIiIiNhNwUJEREREROymYCEiIiIiInZTsBAREREREbspWIiIiIiIiN0ULERERERExG4KFiIiIiIiYjcFCxERERERsZuChYiIiIiI2E3BQkRERERE7KZgISIiIiIidlOwEBERERERuylYiIiIiIiI3RwaLKKjo+nXrx8lSpTA39+f+fPn/+1zrly5QtGiRTl48GAiVCgiIiIiIi/C5MgXDwgI4MSJEyxatIhr167Ru3dvMmfOTM2aNf/0OYMGDSIyMjIRqxQRERERkb/jsGARGRlJYGAgc+bMwc/PDz8/P86cOcOyZcv+NFhs3LiRhw8fJnKlIiIiIiLydxw2FCokJASz2UzRokVt24oXL87x48exWCwJ2kdERDBmzBiGDBmSmGWKiIiIiMgLcFiPRWhoKJ6enri4uNi2eXt7Ex0dzZ07d/Dy8orXftSoUXzwwQfkyZPnH7+m0WjAaDT84+dL0uXkZIz3fxFJPnT8iiRvr+OxazK9fu/5RTgsWDx69CheqABsj2NiYuJt//HHHzly5AibN2+26zW9vNwxGBQs/stSp3ZzdAki8g/p+BWR5MLT093RJSRJDgsWKVKkSBAgnj52dXW1bYuKiuLrr79m4MCB8bb/E+HhD9Vj8R/l5GQkdWo37t17RGxswqF0IpJ06fgVSd5exx6LiIjXa87viwYphwWLjBkzEhERgdlsxmR6UkZoaCiurq6kTp3a1i44OJjLly/TuXPneM//7LPPqFev3kvNubBYrFgs1n/nDUiSFBtrwWzWiYlIcqTjV0SSC31WPZ/DgkX+/PkxmUwcO3aMEiVKAHDkyBEKFSqE0fi/5Fu4cGG+++67eM+tXr06w4YNo2zZsolas4iIiIiIPJ/DgoWbmxv16tVj0KBBjBgxglu3bjF//nxGjhwJPOm9SJUqFa6urmTPnj3B8zNmzEi6dOkSu2wREREREXkOhw6K69u3L35+fjRv3pzBgwfTqVMnqlevDoC/vz9BQUGOLE9ERERERF6QwWq1vjaTDkJD7zu6BHlFTCYjnp7uREQ81LhHkWRGx69I8mYyGfn8u56OLiNRTasc4OgSElX69KleqN3rN41fRERERET+dQoWIiIiIiJiNwULERERERGxm4KFiIiIiIjYTcFCRERERETspmAhIiIiIiJ2U7AQERERERG7KViIiIiIiIjdFCxERERERMRuChYiIiIiImI3BQsREREREbGbgoWIiIiIiNhNwUJEREREROymYCEiIiIiInZTsBAREREREbspWIiIiIiIiN0ULERERERExG4KFiIiIiIiYjcFCxERERERsZuChYiIiIiI2E3BQkRERERE7KZgISIiIiIidlOwEBERERERu/2jYLFnzx6aNm2Kv78/V69eZcqUKWzYsOHfrk1ERERERJKJlw4W+/fvp2PHjmTJkoV79+5hsVgwm8307duX9evXv4ISRUREREQkqXvpYDFlyhR69OjBqFGjcHJyAqBbt25069aNefPm/esFioiIiIhI0vfSweL06dNUrlw5wfaaNWty6dKlf6UoERERERFJXl46WKRKlYpbt24l2H727FnSpEnzrxQlIiIiIiLJy0sHizp16jBixAhCQkIwGAw8fPiQvXv3MnToUN57771XUaOIiIiIiCRxppd9QteuXblx4wb16tUD4IMPPsBqtVKxYkW6du36L5cnIiIiIiLJwUsHC2dnZ8aNG0fnzp05deoUFouFN998k9y5c2O1Wl9FjSIiIiIiksS9dLCoUqUKa9euJXv27GTPnt22/ebNm7z//vscPHjwXy1QRERERESSvhcKFkFBQfzwww8AXL16lSFDhpAiRYp4ba5evYrBYPj3K5R/rNWoXY4uIVFtGlfX0SWIiIgAr993sFtJR1cgScELBYuiRYuycuVK21Cna9eu4ezsbPu5wWAgZcqUjB49+tVUKSIiIiIiSdoLBYs33niDxYsXA9C0aVOmTp2qpWVFRERERMTmpZebXbJkyZ+Gihs3bthdkIiIiIiIJD8vPXn78uXLjB49mt9//53Y2FgArFYrMTExhIeHc/LkyX+9SBERERERSdpeusdiyJAhnD59mho1anDz5k1q1aqFn58fYWFhDBo06BWUKCIiIiIiSd1L91gcPXqU6dOnU6pUKX744QeqVq1K4cKFmTBhAnv27KFhw4avok4REREREUnCXrrHIiYmhmzZsgGQM2dOTp8+DUC9evU4fvz4v1udiIiIiIgkCy8dLLJkycLvv/8OPAkWp06dAsBisfDw4cN/tzoREREREUkWXnoo1AcffECvXr0ICAigYsWKNGvWjMyZM7N//37y5s37KmoUEREREZEk7qWDRdu2bUmRIgVWq5XChQvTvn17ZsyYwRtvvEFAQMCrqFFERERERJK4lw4WBoOBFi1a2B63bduWtm3bAhAZGfmvFSYiIiIiIsnHC8+xePToEbt37+aHH34gKioqwc+///57atWq9a8WJyIiIiIiycML9VicOnWKNm3aEB4ejtVqJUuWLCxZsoTMmTNz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Pvc5YWFhtGzZEqvVyuTJk+MNl3oRXl7uGAwKFv9lqVO7OboEEfmHdPyKSHLh6enu6BKSJIcFi4wZMxIREYHZbMZkelJGaGgorq6upE6dOkH7mzdv2iZvL168GC8vr5d+zfDwh+qx+I+7d+8RsbEWR5chIv+Ajl8RSS4iIh46uoRE9aJBymHBIn/+/JhMJo4dO0aJEiUAOHLkCIUKFUrQExEZGUmbNm0wGo0sXryY9OnT/6PXtFisWCxWu2uXpCs21oLZrBMTkeRIx6+IJBf6rHo+hw0Qc3Nzo169egwaNIjg4GB27NjB/Pnzbb0SoaGhREVFATBr1iwuXbrE6NGjbT8LDQ3VqlAiIiIiIkmEw3osAPr27cugQYNo3rw5Hh4edOrUierVqwPg7+/PyJEjqV+/Ptu2bSMqKoqPPvoo3vM/+OADRo0a5YjSRUREREQkDocGCzc3N0aPHm3riYjr9OnTtj8/727cIiIiIiKSdGitLBERERERsZuChYiIiIiI2E3BQkRERERE7KZgISIiIiIidlOwEBERERERuylYiIiIiIiI3RQsRERERETEbgoWIiIiIiJiNwULERERERGxm4KFiIiIiIjYTcFCRERERETspmAhIiIiIiJ2U7AQERERERG7KViIiIiIiIjdFCxERERERMRuChYiIiIiImI3BQsREREREbGbgoWIiIiIiNhNwUJEREREROymYCEiIiIiInZTsBAREREREbspWIiIiIiIiN0ULERERERExG4KFiIiIiIiYjcFCxERERERsZuChYiIiIiI2E3BQkRERERE7KZgISIiIiIidlOwEBERERERuylYiIiIiIiI3RQsRERERETEbgoWIiIiIiJiNwULERERERGxm4KFiIiIiIjYTcFCRERERETspmAhIiIiIiJ2U7AQERERERG7KViIiIiIiIjdFCxERERERMRuChYiIiIiImI3BQsREREREbGbgoWIiIiIiNhNwUJEREREROymYCEiIiIiInZTsBAREREREbspWIiIiIiIiN0cGiyio6Pp168fJUqUwN/fn/nz5//tcw4fPkyVKlUSoToREREREXlRJke+eEBAACdOnGDRokVcu3aN3r17kzlzZmrWrPnc9qdPn6ZLly6kSJEikSsVEREREZG/4rAei8jISAIDA+nfvz9+fn5Uq1aNNm3asGzZsue2X7lyJY0bNyZdunSJXKmIiIiIiPwdhwWLkJAQzGYzRYsWtW0rXrw4x48fx2KxJGi/d+9eRo8eTYsWLRKxShEREREReREOCxahoaF4enri4uJi2+bt7U10dDR37txJ0H769OlUr149ESsUEREREZEX5bA5Fo8ePYoXKgDb45iYmFfymkajAaPR8Er2LUmDk5MWOhNJrnT8ikhyYTLp8+p5HBYsUqRIkSBAPH3s6ur6Sl7Ty8sdg0HB4r8sdWo3R5cgIv+Qjl8RSS48Pd0dXUKS5LBgkTFjRiIiIjCbzZhMT8oIDQ3F1dWV1KlTv5LXDA9/qB6L/7h79x4RG5twjo6IJH06fkUkuYiIeOjoEhLViwYphwWL/PnzYzKZOHbsGCVKlADgyJEjFCpUCKPx1XQvWSxWLBbrK9m3JA2xsRbMZp2YiCRHOn5FJLnQZ9XzOWyAmJubG/Xq1WPQoEEEBwezY8cO5s+fT7NmzYAnvRdRUVGOKk9ERERERF6CQ2ee9O3bFz8/P5o3b87gwYPp1KmTbeUnf39/goKCHFmeiIiIiIi8IIfeedvNzY3Ro0czevToBD87ffr0c59Tv3596tev/6pLExERERGRl6C1skRERERExG4KFiIiIiIiYjcFCxERERERsZuChYiIiIiI2E3BQkRERERE7KZgISIiIiIidlOwEBERERERuylYiIiIiIiI3RQsRERERETEbgoWIiIiIiJiNwULERERERGxm4KFiIiIiIjYTcFCRERERETspmAhIiIiIiJ2U7AQERERERG7KViIiIiIiIjdFCxERERERMRuChYiIiIiImI3BQsREREREbGbgoWIiIiIiNhNwUJEREREROymYCEiIiIiInZTsBAREREREbspWIiIiIiIiN0ULERERERExG4KFiIiIiIiYjcFCxERERERsZuChYiIiIiI2E3BQkRERERE7KZgISIiIiIidlOwEBERERERuylYiIiIiIiI3RQsRERERETEbgoWIiIiIiJiNwULERERERGxm4KFiIiIiIjYTcFCRERERETspmAhIiIiIiJ2U7AQERERERG7KViIiIiIiIjdFCxERERERMRuChYiIiIiImI3BQsREREREbGbgoWIiIiIiNhNwUJEREREROymYCEiIiIiInZTsBAREREREbs5NFhER0fTr18/SpQogb+/P/Pnz//TtidPnuSjjz6iSJEifPjhh5w4cSIRKxURERERkb/i0GAREBDAiRMnWLRoEQMHDmTq1Kls3bo1QbvIyEjatm1LiRIl+OabbyhatCiff/45kZGRDqhaRERERESe5bBgERkZSWBgIP3798fPz49q1arRpk0bli1blqBtUFAQKVKkoFevXvj6+tK/f3/c3d2fG0JERERERCTxOSxYhISEYDabKVq0qG1b8eLFOX78OBaLJV7b48ePU7x4cQwGAwAGg4FixYpx7NixxCxZRERERET+hMlRLxwaGoqnpycuLi62bd7e3kRHR3Pnzh28vLzitc2dO3e856dLl44zZ8681GsajQaMRoN9hUuS5uSk9QhEkisdvyKSXJhM+rx6HocFi0ePHsULFYDtcUxMzAu1fbbd30mXzuMfVJp8bRpX19ElJLrUqd0cXYLIv0LHr0jy9vodw6/b+5XncVjcSpEiRYJg8PSxq6vrC7V9tp2IiIiIiDiGw4JFxowZiYiIwGw227aFhobi6upK6tSpE7QNCwuLty0sLIwMGTIkSq0iIiIiIvLXHBYs8ufPj8lkijcB+8iRIxQqVAijMX5ZRYoU4ZdffsFqtQJgtVo5evQoRYoUScySRURERETkTzgsWLi5uVGvXj0GDRpEcHAwO3bsYP78+TRr1gx40nsRFRUFQM2aNbl37x7Dhw/n7NmzDB8+nEePHvHuu+86qnwREREREYnDYH3aDeAAjx49YtCgQXz33Xd4eHjQunVrWrRoAUDevHkZOXIk9evXByA4OJiBAwdy7tw58ubNy+DBgylQoICjShcRERERkTgcGixEREREROS/QYvwioiIiIiI3RQsRERERETEbgoWIiIiIiJiNwULERERERGxm4KFiIiIiMQTHh7u6BIkGVKwEBGRV+LZRQe1CKFI8vDgwQOmTJnCzp07Abh48SIWi8XBVUlyoGAhSZI+wESSP4PBAMDp06fjPRaRpM3Dw4PUqVPToUMH2rRpw7hx43j06JGjy5JkQMFCkhyLxYLR+ORX89SpU/z++++cPHnSwVWJyD+xZ88eAgICiIyMBNRrIZJcdOvWDV9fX/bv389bb72Fu7u7o0uSZMDk6AJEnvU0VIwfP97WDRsZGUmFChXo1q0badKkcWR5IvISsmXLxi+//EJQUBANGjRQr4VIEvb0wt7T/+fNm5eCBQsyfvx4smTJQo0a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",
      "text/plain": [
       "<Figure size 800x550 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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iIiIiIg+j1IUFpaWlkhISJBrS0hIkA1/+thxCwuLQj9GYmIa71gQEREREf2LiUm5Qp2nFIVF/fr18csvv0AqlUIikUAqleL69esYMWKE7HhYWBjc3d0BAC9evMCLFy9Qv379Qj9Gfr4U+fnSEslPRERERKTqRN/H4mPi4+ORmZkJAOjYsSNSUlIwb948REREYN68ecjIyECnTp0AAH379sX+/fuxc+dO3L9/H97e3mjTpg1sbW3FfApERERERGqjzBYWrVq1wpEjRwAAhoaGWLt2reyuxI0bN7Bu3ToYGBgAAJycnODv749Vq1ahb9++qFChAgIDA8WMT0RERESkViRSqZTjfwDEx78VOwIRERERUZljYWFUqPPK7B0LIiIiIiJSHiwsiIiIiIhIMBYWREREREQkGAsLIiIiIiISjIUFEREREREJxsKCiIiIiIgEY2FBRERERESCsbAgIiIiIiLBWFgQEREREZFgggqL7OxsREVFITc3Fzk5OcWViYiIiIiIlEyRCgupVIolS5agSZMm6NKlC168eIGpU6fC19eXBQYRERERkRoqUmGxefNm7N+/H7Nnz4aOjg4AoF27djh16hSCgoKKNSAREREREZV9RSostm/fjlmzZsHd3R0SiQQA4OrqioCAABw8eLBYAxIRERERUdlXpMLi+fPncHBwUGi3t7dHfHy84FBERERERKRcilRYWFtb49atWwrt58+fh62treBQRERERESkXLSK8klDhw7FnDlzEB8fD6lUitDQUGzfvh2bN2/GtGnTijsjERERERGVcRKpVCotyidu374dq1evxsuXLwEApqamGD58OAYPHlysAUtLfPxbsSMQEREREZU5FhZGhTqvSIXFoUOH0Lp1a1SoUAGJiYmQSqUwMzP77JBlCQsLIiIiIiJFhS0sijTHwt/fXzZJ29TUVOmLCiIiIiIiEqZIhUXVqlXx8OHD4s5CRERERERKqkiTt+3t7fHDDz9g/fr1qFq1KnR1deWOBwYGFks4IiIiIiJSDkUqLB4/foxGjRoBAPetICIiIiKioq8KpWo4eZuIiIiISFFhJ28X6Y4FAKSlpeHAgQN4+PAhtLS0ULNmTbi6usLQ0LColyQiIiIiIiVVpDsWsbGx6N+/P16/fg07Ozvk5+fj6dOnMDMzw2+//YZKlSqVRNYSxTsWRERERESKSnQf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A35+fjhx4gQMDQ0xdOhQDBo0CABQq1YtBAYGwt3dHR07dsTjx48VPr9Hjx5YsGABsrKysGzZMhw6dAipqalo3rw5Zs+ejcqVKxc6S3z82+J6WkREREREKsPCwqhQ54laWJQlLCyIiIiIiBQVtrAQbY4FERERERGpDhYWREREREQkGAsLIiIiIiISjIUFEREREREJxsKCiIiIiIgEY2FBRERERESCsbAgIiIiIiLBWFgQEREREZFgLCyIiIiIiEgwFhZERERERCQYCwsiIiIiIhKMhQUREREREQnGwoKIiIiIiARjYUFERERERIKxsCAiIiIiIsFYWBARERERkWAsLIiIiIiISDAWFkREREREJBgLCyIiIiIiEoyFBRERERERCcbCgoiIiIiIBGNhQUREREREgrGwICIiIiIiwVhYEBERERGRYCwsiIiIiIhIMBYWREREREQkGAsLIiIiIiISjIUFEREREREJxsKCiIiIiIgEY2FBRERERESCsbAgIiIiIiLBWFgQEREREZFgLCyIiIiIiEgwFhZERERERCQYCwsiIiIiIhKMhQUREREREQkmamGRlZWF6dOno3HjxmjVqhWCg4M/eu7du3fRq1cv1K9fHz179sTt27fljh86dAjt2rVD/fr1MXr0aCQmJpZ0fCIiIiIi+oeohcWiRYtw+/ZtbNq0CbNnz0ZQUBCOHTumcF56ejq8vLzQuHFj7NmzB05OTvj++++Rnp4OALh58yZ8fX0xZswYbN++HSkpKfDx8Sntp0NERPTZwsPDMGXKOISHh4kdhYhIENEKi/T0dOzcuRO+vr6oU6cO2rdvj2HDhmHr1q0K5x45cgS6urrw9vZG9erV4evri3LlysmKkC1btqBTp05wc3ODvb09Fi1ahHPnzuHZs2el/bSIiIgKLSsrCyEhwXj9OgGbNwcjKytL7EhEREUmWmFx//595ObmwsnJSdbWqFEj3LhxA/n5+XLn3rhxA40aNYJEIgEASCQSNGzYEOHh4bLjjRs3lp1fuXJlWFlZ4caNGyX/RIiIiIro8OH9SE5+AwB48+YNjhw5IG4gIiIBRCss4uPjYWJiAh0dHVmbubk5srKy8ObNG4VzK1asKNdmZmaGly9fAgBevXr1yeNERERlTVzcSxw5chBSqRQAIJVKceTIAcTF8XcXESknLbEeOCMjQ66oACD7ODs7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",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>[3.0 Haiku] prompts.py:basic_summarize_score</th>\n",
       "      <th>[3.0 Haiku] prompts.py:guided_legal_summary_score</th>\n",
       "      <th>[3.0 Haiku] prompts.py:summarize_long_document_score</th>\n",
       "      <th>[3.5 Sonnet] prompts.py:basic_summarize_score</th>\n",
       "      <th>[3.5 Sonnet] prompts.py:guided_legal_summary_score</th>\n",
       "      <th>[3.5 Sonnet] prompts.py:summarize_long_document_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>9.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>9.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.423333</td>\n",
       "      <td>1.443333</td>\n",
       "      <td>1.522222</td>\n",
       "      <td>1.088889</td>\n",
       "      <td>1.330000</td>\n",
       "      <td>1.475556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.135647</td>\n",
       "      <td>0.146969</td>\n",
       "      <td>0.092030</td>\n",
       "      <td>0.535547</td>\n",
       "      <td>0.086458</td>\n",
       "      <td>0.285750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.190000</td>\n",
       "      <td>1.270000</td>\n",
       "      <td>1.440000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.230000</td>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.400000</td>\n",
       "      <td>1.300000</td>\n",
       "      <td>1.460000</td>\n",
       "      <td>1.210000</td>\n",
       "      <td>1.280000</td>\n",
       "      <td>1.450000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.440000</td>\n",
       "      <td>1.450000</td>\n",
       "      <td>1.460000</td>\n",
       "      <td>1.290000</td>\n",
       "      <td>1.310000</td>\n",
       "      <td>1.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.510000</td>\n",
       "      <td>1.490000</td>\n",
       "      <td>1.630000</td>\n",
       "      <td>1.400000</td>\n",
       "      <td>1.340000</td>\n",
       "      <td>1.640000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.600000</td>\n",
       "      <td>1.660000</td>\n",
       "      <td>1.660000</td>\n",
       "      <td>1.490000</td>\n",
       "      <td>1.480000</td>\n",
       "      <td>1.650000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       [3.0 Haiku] prompts.py:basic_summarize_score  \\\n",
       "count                                      9.000000   \n",
       "mean                                       1.423333   \n",
       "std                                        0.135647   \n",
       "min                                        1.190000   \n",
       "25%                                        1.400000   \n",
       "50%                                        1.440000   \n",
       "75%                                        1.510000   \n",
       "max                                        1.600000   \n",
       "\n",
       "       [3.0 Haiku] prompts.py:guided_legal_summary_score  \\\n",
       "count                                           9.000000   \n",
       "mean                                            1.443333   \n",
       "std                                             0.146969   \n",
       "min                                             1.270000   \n",
       "25%                                             1.300000   \n",
       "50%                                             1.450000   \n",
       "75%                                             1.490000   \n",
       "max                                             1.660000   \n",
       "\n",
       "       [3.0 Haiku] prompts.py:summarize_long_document_score  \\\n",
       "count                                           9.000000      \n",
       "mean                                            1.522222      \n",
       "std                                             0.092030      \n",
       "min                                             1.440000      \n",
       "25%                                             1.460000      \n",
       "50%                                             1.460000      \n",
       "75%                                             1.630000      \n",
       "max                                             1.660000      \n",
       "\n",
       "       [3.5 Sonnet] prompts.py:basic_summarize_score  \\\n",
       "count                                       9.000000   \n",
       "mean                                        1.088889   \n",
       "std                                         0.535547   \n",
       "min                                         0.000000   \n",
       "25%                                         1.210000   \n",
       "50%                                         1.290000   \n",
       "75%                                         1.400000   \n",
       "max                                         1.490000   \n",
       "\n",
       "       [3.5 Sonnet] prompts.py:guided_legal_summary_score  \\\n",
       "count                                           9.000000    \n",
       "mean                                            1.330000    \n",
       "std                                             0.086458    \n",
       "min                                             1.230000    \n",
       "25%                                             1.280000    \n",
       "50%                                             1.310000    \n",
       "75%                                             1.340000    \n",
       "max                                             1.480000    \n",
       "\n",
       "       [3.5 Sonnet] prompts.py:summarize_long_document_score  \n",
       "count                                           9.000000      \n",
       "mean                                            1.475556      \n",
       "std                                             0.285750      \n",
       "min                                             0.750000      \n",
       "25%                                             1.450000      \n",
       "50%                                             1.600000      \n",
       "75%                                             1.640000      \n",
       "max                                             1.650000      "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "%matplotlib inline\n",
    "plt.style.use(\"seaborn\")\n",
    "\n",
    "# Load the data\n",
    "df = pd.read_csv(\"data/results.csv\")\n",
    "\n",
    "\n",
    "# Function to extract PASS/FAIL and score\n",
    "def extract_result(text):\n",
    "    match = re.search(r\"\\[(PASS|FAIL)\\]\\s*\\((\\d+\\.\\d+)\\)\", str(text))\n",
    "    if match:\n",
    "        return match.group(1), float(match.group(2))\n",
    "    return \"UNKNOWN\", 0.0\n",
    "\n",
    "\n",
    "# Apply the extraction to relevant columns\n",
    "for col in df.columns[2:]:\n",
    "    df[f\"{col}_result\"], df[f\"{col}_score\"] = zip(*df[col].apply(extract_result), strict=False)\n",
    "\n",
    "# Prepare data for grouped accuracy score\n",
    "models = [\"3.5 Sonnet\", \"3.0 Haiku\"]\n",
    "prompts = [\"basic_summarize\", \"guided_legal_summary\", \"summarize_long_document\"]\n",
    "\n",
    "results = []\n",
    "for model in models:\n",
    "    for prompt in prompts:\n",
    "        col = f\"[{model}] prompts.py:{prompt}_result\"\n",
    "        if col in df.columns:\n",
    "            pass_rate = (df[col] == \"PASS\").mean()\n",
    "            results.append({\"Model\": model, \"Prompt\": prompt, \"Pass Rate\": pass_rate})\n",
    "\n",
    "result_df = pd.DataFrame(results)\n",
    "\n",
    "# 1. Grouped bar chart for accuracy scores\n",
    "plt.figure(figsize=(12, 6))\n",
    "result_pivot = result_df.pivot(index=\"Prompt\", columns=\"Model\", values=\"Pass Rate\")\n",
    "result_pivot.plot(kind=\"bar\")\n",
    "plt.title(\"Pass Rate by Model and Prompt\")\n",
    "plt.ylabel(\"Pass Rate\")\n",
    "plt.legend(title=\"Model\")\n",
    "plt.xticks(rotation=45, ha=\"right\")\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "# 2. Box plot of scores\n",
    "plt.figure(figsize=(8, 8))\n",
    "score_cols = [col for col in df.columns if col.endswith(\"_score\")]\n",
    "score_data = df[score_cols].melt()\n",
    "sns.boxplot(x=\"variable\", y=\"value\", data=score_data)\n",
    "plt.title(\"Distribution of Scores\")\n",
    "plt.xticks(rotation=90)\n",
    "plt.xlabel(\"Model and Prompt\")\n",
    "plt.ylabel(\"Score\")\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "# Display summary statistics\n",
    "summary_stats = df[[col for col in df.columns if col.endswith(\"_score\")]].describe()\n",
    "display(summary_stats)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking at the results, it seems like our best performer is 3.5 Sonnet, with a 66% pass rate across all evals and only 3 failed tests out of 45 (when one test fails for a prompt, it's deemed a fail). And this is just the beginning – we are using entirely notional data here that was either (a) generated by Claude, or (b) taken from the SEC gov website. We can do much better when we have real data, because we know more about the distinct problem set we are working with."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Iterative Improvement\n",
    "\n",
    "As we look into the eval results more, there's continued room for improvement. This is where the iterative part of prompt engineering comes in. Here are some steps we can take to improve our results:\n",
    "\n",
    "1. Analyze the Promptfoo results to identify strengths and weaknesses – for example, it seems our contains eval was failing a lot. This is probably because some of the documents don't contain the information which is required in the XML tags. We should refine this eval if we are to accurately assess performance (but this is just an example!).\n",
    "2. Refine prompts to address specific issues (e.g., improve conciseness or completeness) – we saw that multi-shot was an initial really good first attempt. This is somethign we should incorporate alongside some of the advanced techniques to improve performance further.\n",
    "3. Experiment with different chunking strategies for long documents.\n",
    "4. Fine-tune temperature and max_tokens parameters.\n",
    "5. Implement post-processing steps to enhance summary quality.\n",
    "\n",
    "## Conclusion and Best Practices\n",
    "\n",
    "In this guide, we've covered a range of techniques for summarizing documents with Claude, with a focus on legal documents. Building a perfect summarization system and eval framework for summarization is an art: it requires a combination of these methods in order to succeed. As we mentioned at the beginning, summarization is a very subjective topic, and yet we've had a good stab at finding feasible ways to evaluate it and feel comfortable with our results. Always remember too – you aren't benchmarking your results against 100% accuracy. You're benchmarking against how well you could perform this complex task yourself; and with the speed and efficiency of Claude as demonstrated in this guide, you start to realise the true benefits to such a methodological approach, so you can spend time on the real decision making. \n",
    "\n",
    "Wrapping up the advice here, we've included some best practices to keep in mind:\n",
    "\n",
    "1. Craft clear and specific prompts. Use things like \"don't preamble\" to constrain the output.\n",
    "2. Use at least 2 examples.\n",
    "3. Use guided summarization for domain-specific documents.\n",
    "4. Implement effective, advanced strategies for long documents.\n",
    "5. Regularly evaluate and refine your approach.\n",
    "6. Consider the ethical implications and limitations of AI-generated summaries."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py311",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
